The field of digital video signal processing has seen rapid development in recent years. Operations, such as decoding and decompressing a signal, which were once done in hardware are now becoming possible to implement in software. However, problems still exist performing digital signal processing via software.
One standard for video signal processing is described in a specification entitled, “The Specification of Consumer Use Digital Video VCR's using 6.3 mm Magnetic Tape” (HD Digital VCR Conference, December, 1994). As described therein, video signals are sampled at 13.5 MHz for luminance and 6.75 MHz for color differences and compressed before storing on a magnetic tape. The compression is done with a bit rate reduction technique using Discrete Cosine Transform (DCT) and Variable Length Coding (VLC), e.g., Huffman coding. The compressed data of one video segment is assigned to 30 separate blocks. The variable length coding process leaves the data in each block as a contiguous stream of variable length codes. In this application, the variable length codes may also be known as symbols. Because the symbols are variable length and also stored contiguously, it is impossible to know in advance where the beginning of each symbol is within a block (other than the first symbol).
The process of decoding and decompressing the stored signal involves a reverse of the process of storing it. That is, first the signal must be decoded before an Inverse Discrete Cosine Transform is performed. Other steps, such as Inverse Quantization, may be performed as well, if quantization was done prior to storage. As described above, it is difficult to decode the symbols because they are of variable length and are not assigned pre-defined locations within each block. That is, the length of the first symbol must be known so that a variable length shift can be done to obtain the start of the next symbol. Furthermore, decoding the video signal must be done in real time for practical use. Unfortunately, this can be difficult even with a relatively fast processor.
Some conventional techniques decode one symbol at a time, obtaining the length of the first symbol to gain the offset into the bit-stream needed to locate the start of the second variable length symbol. These techniques may not be fast enough to achieve real time video processing. Exacerbating the problem is the fact that the architecture used may have a relatively long latency for memory access. Given that the conventional technique must first decode a symbol before knowing the location of the next symbol, the second memory read is delayed until the first symbol is decoded. Consequently, the processor may sit idle while data is being accessed and real time signal processing may not be achieved. Another problem caused by the variable length coding is that while some computer architectures feature multiple ALUs, most of the ALUs sit idle while a symbol is being decoded to get the starting location of the next symbol.